package com.wy.w_ui.refresh;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/**
 * 下拉刷新的刷新布局,可以通过重载这个类实现自己的布局
 */
public abstract class WOverView extends FrameLayout {

    public enum WRefreshState{
        /**
         * 初始状态
         */
        STATE_INIT,
        /**
         * Header 展示状态
         */
        STATE_VISIBLE,
        /**
         * 超出可刷新距离的状态
         */
        STATE_REFRESH,
        /**
         * 超出可刷新位置松手的状态
         */
        STATE_OVER_RELEASE
    }

    /**
     * 刷新状态
     */
    protected WRefreshState refreshState = WRefreshState.STATE_INIT;

    /**
     * 触发刷新的最小距离
     */
    public int mPullRefreshHeight;

    /**
     * 最小阻尼
     */
    public float minDamp = 1.6f;

    /**
     * 最大阻尼
     */
    public float maxDamp = 2.2f;


    public WOverView(@NonNull Context context) {
        super(context);
    }

    public WOverView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public WOverView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    /**
     * 初始化
     */
    public abstract void init();

    /**
     * 滚动方法
     * @param scrollY 滚动距离
     * @param pullRefreshHeight 下拉高度
     */
    protected abstract void onScroll(int scrollY,int pullRefreshHeight);

    /**
     * 显示刷新布局
     */
    protected abstract void onVisible();

    /**
     * 超过 Overlay,释放就会加载 -------------------------------------------------
     */
    public abstract void onOver();

    /**
     * 开始刷新
     */
    public abstract void onRefresh();

    /**
     * 刷新结束
     */
    public abstract void onFinish();

    public WRefreshState getRefreshState() {
        return refreshState;
    }

    public void setRefreshState(WRefreshState refreshState) {
        this.refreshState = refreshState;
    }
}
